#define _CRT_SECURE_NO_WARNINGS

//第26讲：顺序表专题
//课前预备
//1. 课程⽬标
//C语⾔语法基础到数据结构与算法，前⾯已经掌握并具备了扎实的C语⾔基础，为什么要学习数据结构
//课程？⸺通讯录项⽬

//3. 数据结构相关概念
//什么是数据结构？
//数据结构是计算机存储，组织数据的方式

//现在要在数组里面修改、插入、删除一个数据，但是泥并不知道数组的元素个数
//那么泥就需要找数组已有的元素个数再进行操作
//顺序表
//1、顺序表的概念及结构
//顺序表的底层就是数组
//顺序表说：窝虽然底层是数组，但是窝提供了很多现成的方法，开箱即用，窝就变成了一个新的很厉害的数据结构
//顺序表就在数组的基础上增加了增删改查等方法
//顺序表是线性表的一种
//物理结构：连续的
//逻辑结构：连续的

//1.1 线性表：具有相同特性的数据结构的集合
//物理结构：不一定连续
//逻辑结构：连续的  (想象排队，泥排队的时候整体上是排成一条线的，但这条线补一定就是直的，可能有点歪，但能看出来这是线性的)


//2、顺序表分类
//• 顺序表和数组的区别
//◦ 顺序表的底层结构是数组，对数组的封装，实现了常⽤的增删改查等接⼝
//
//• 顺序表分类
//◦ 静态顺序表
//概念：使⽤定⻓数组存储元素
//静态顺序表缺陷：空间给少了不够⽤，给多了造成空间浪费
//
//◦ 动态顺序表
//可按需申请



//3、动态顺序表的实现
#include"SeqList.h"
void SLTest01()
{
	SL sl;
	//测试初始化:
	SLInit(&sl);

	//测试尾插:
	SLPushBack(&sl, 1);//选择在尾部插入1
	SLPushBack(&sl, 2);//选择在尾部插入2
	SLPushBack(&sl, 3);//选择在尾部插入3
	SLPushBack(&sl, 4);//选择在尾部插入4
	SLPushBack(&sl, 5);//选择在尾部插入5
	SLPushBack(&sl, 6);//选择在尾部插入6
	PrintSL(sl);//打印看一下

	//测试头插:
	SLPushFront(&sl, 0);
	SLPushFront(&sl, -1);
	PrintSL(sl);//打印看一下

	//测试尾删:
	SLPopBack(&sl);
	PrintSL(sl);//打印看一下
	
	//测试头删:
	SLPopFront(&sl);
	PrintSL(sl);//打印看一下

	//测试指定位置插入数据:
	SLInsert(&sl, 3, 5);
	PrintSL(sl);//打印看一下

	//测试指定位置删除数据:
	SLErase(&sl, 3);
	PrintSL(sl);//打印看一下

	//测试查找数据:
	int Find = SLFind(&sl, 4);
	if (Find >= 0)
	{
		printf("找到啦，下标是%d\n", Find);
	}
	else
	{
		printf("没找到\n");
	}

	//测试销毁:
	SLDestroy(&sl);
}
int main()
{
	SLTest01();
	return 0;
}

















